#ifndef __MOCHILA_C
#define __MOCHILA_C
#include "mochila.h"
using namespace std;

Mochila::Mochila(){
   _peso = 0;
   _valor = 0;
   _capacidad = CAPACIDAD;
}
Mochila::Mochila(int c){
   _peso = 0;
   _valor = 0;
   _capacidad = c;
}

inline int Mochila::restante(){
   return _capacidad - _peso;
}

bool Mochila::llena(){
   return restante();
}

bool Mochila::insertar(Elementos e){
   if(e.peso() < restante()){
      _mochila.insert(e);
      _peso  += e.peso();
      _valor += e.valor();
   }
}

inline int Mochila::peso(){
   return _peso;
}

inline int Mochila::valor(){
   return _valor;
}

void Mochila::print(ostream& out){
   set<Elementos>::iterator i;
   out<<"[";
   for(i=_mochila.begin();i!=_mochila.end();i++){
      out<<(*i)<<",";
   }
   out<<"]";
}

void Mochila::read(istream& in){

}

ostream& operator <<(ostream& out, Mochila m){
   m.print(out);
   return out;
}

istream& operator >>(istream& in, Mochila m){
   m.read(in);
   return in;
}

#endif


